#include "stdio.h"
#include "string.h"
#include "math.h"


int ch[27];
long int tt[27][2],tu[27][27];


void dfs(int a)
{
	int i;
	for (i=1;i<=26;i++)
	{
		if (ch[i]!=0)
			if ((tu[i][a]!=0)||(tu[a][i]!=0))
			{
				ch[i]=0;
				dfs(i);
			}
	}
}

int nozero(int ch[27])
{
	int i,j;
	j=0;
	for (i=1;i<=26;i++)
	{
		if (ch[i]!=0)
		{
			j=1;
			break;
		}
	}

	return j;

}


void main()
{
	long n,num,k,l;
	char s[2000];
	int a,b,i,j,flag;
	long int differnum;
	FILE *in,*out;

	in=fopen("words.in","r");
	out=fopen("out1.txt","w");
	in=stdin;
	out=stdout;
	fscanf(in,"%ld",&num);
	for (k=1;k<=num;k++)
	{
		fscanf(in,"%ld",&n);

		for (i=1;i<=26;i++) tt[i][0]=tt[i][1]=ch[i]=0;
		for (i=1;i<=26;i++)
			for (j=1;j<=26;j++)
				tu[i][j]=0;
		for (l=1;l<=n;l++)
		{
			fscanf(in,"%s",s);
			a=s[0]-'a'+1;
			b=s[strlen(s)-1]-'a'+1;
			tt[a][0]++;
			tt[b][1]++;
			ch[a]=ch[b]=1;
			tu[a][b]++;
		}

		for (i=1,differnum=0;i<=26;i++)
		{
			{
				if (tt[i][0]!=tt[i][1])
					differnum++;
			}
		}

		if (differnum>2)
		{
			fprintf(out,"The door cannot be opened.\n");
		}
		else if (differnum==2)
		{
			flag=1;
			for (i=1;i<=26;i++)
				if (tt[i][0]!=tt[i][1])
				{
					a=i;break;
				}
			for (i=1;i<=26;i++)
				if (abs(tt[i][0]-tt[i][1])>1)
				{
					flag=0;
					break;
				}
			if (flag) dfs(a);
			
			if (nozero(ch))
					fprintf(out,"The door cannot be opened.\n");
			else
					fprintf(out,"Ordering is possible.\n");


		}
		else if (differnum==0)
		{
			a=1;
			while (ch[a]==0) a++;	
			dfs(a);

			if (nozero(ch))
				fprintf(out,"The door cannot be opened.\n");
			else
				fprintf(out,"Ordering is possible.\n");
		}
		else
			fprintf(out,"The door cannot be opened.\n");
	}
}


/*
name:Play on Words
area:Central Europe 1999
type:graph
method:
	记录下每个点的入路和出路，如果入路数不等于出路数的点大于2则输出不可能
	这其实是一道判断欧拉图的题
	判断方法是：首先要判断这是一个完全图，即所有点都是连在一起的。
	然后判断入路是不等于出路的点是否为2或为0
	我在做的时候是先检查入路和出路，然后再用深度搜索看所有点是否都连在一起。
note: finished with the help of acm-team group in my college
finish time : 2004/9/6
problem:
	1。一开始以为不用判断是否为完全图。
	2。后来对于广度搜索不太熟悉，写错了好几次。
learn:
	以前总喜欢用非递归来代替递归完成搜索功能，现在我觉得如果内存允许，写递归搜索不但思路清楚不易出错，而且代码还简单，
	可以在比赛中节省时间。

 */

 









